# 程序员鼓励师
import random
from threading import Thread

from pynput import keyboard
from playsound import playsound

count = 0
sounds = ["encourage.mp3", "ikun.mp3"]


def on_release(key):
    """
    这个函数会在用户释放按键时 调用
    :param key: 默认有一个参数, 表示用户按下了哪个键
    """
    print(key)
    global count
    count += 1
    if count % 20 == 0:
        # 播放音乐
        # 注意这里面产生的 随机数 是 []
        choice = random.randint(0, len(sounds) - 1)
        # playsound(sounds[choice])
        # 由于播放声音时消耗时间比较多,  打字会有明显的卡顿,
        # 所以新建一个线程, 在这个线程里面播放音乐
        t = Thread(target=playsound, args=(sounds[choice], ))
        t.start()


# 创建好 listener　后, 用户的按键操作就会被捕捉到
listener = keyboard.Listener(on_release=on_release)
# 启动 listener
listener.start()
# 主线程等待 listener 这个线程执行完, 才能执行
listener.join()

# 听到声音了吧
# 这次有声音么
# 这次听到
# 现在还抛异常么
# 没有异常了吧
# 注意修改了 playsound 的源码
# 将 里面的 编码格式从 utf-16 那一块注释掉了
# 单独用一个线程播放音乐之后, 这样就不会那么卡顿了, 明显变流畅了
